package com.atguigu.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自定义的拦截器
 * 实现接口HandlerInterceptor
 *
 * 设置拦截点的意义
 *   在处理器方法执行之前拦截：安全性判断，权限 ，是否登录了没有
 *   在处理器方法之后，页面跳转之前要拦截，主要是为了测试
 *   在页面跳转完成后还要拦截，主要是为了测试
 */
public class MyInterceptor implements HandlerInterceptor {
    /**
     * 方法：访问处理器方法之前拦截
     * preHandle方法返回值false就表示拦截
     * preHandle方法返回值true就表示放行
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器 preHandle");
        return true;
    }

    /**
     *  方法：处理器方法执行完毕，但是还没有进行页面的跳转
     *  这个时候进行拦截
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器 postHandle");
    }

    /**
     *  方法：在处理器方法执行完毕，页面也跳转完成了
     *  进行拦截
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截器 afterCompletion");
    }
}
